package com.sunyard.dal.mapper;

import com.sunyard.dal.bo.task.*;
import com.sunyard.dal.dto.znsTask.*;
import com.sunyard.dal.entity.TaskCopy;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author jimin.duan
 * @Description TODO
 * @createTime 2022年06月24日 17:06:00
 */
public interface ZNSTaskMapper {
    void insertLockToLock(Map map);

    /*
     * 添加任务
     * */
    void addTask(Map<String, Object> maps);

    /***
     *
     * 任务管理-任务查询*/

    List<TaskZNSDTO> selectByContidion(TaskFindBO taskFindBO);

    /**
     * 查询机构下主管跟柜员
     * */

    /**
     * 查询当前锁具是否有未结束任务
     */
    Integer selectforLockOnly(@Param("locksn") String locksn);


    /**
     * 删除锁具表中 超过过期时间的锁具
     */
    void deletelock();

    int deleteByTaskTypeName(String taskTypeName);

    void insertlog(Map mapforlog);

    void updateTaskState(@Param("taskIds") String[] taskIds);

    void updateTaskStateDetele(@Param("taskTypeName") String taskTypeName);

    List<String> findByTaskTypeName(@Param("taskTypeName") String taskTypeName);

    Integer selectcount();

    List<String> selectInsertID(@Param("totals") Integer totals);

    void updateAuditState(@Param("taskID") String taskID, @Param("auditOP") String auditOP,
                          @Param("createAuditOP") String createAuditOP);

    void issuedTask(TaskissuedBO taskissued);

    List<OrgDTO> findPeopleByOrg(OrgBO orgBO);

    List<LockDTO> findLockByOP(LockBO lock);

    String selectlockSnbyName(String lock);

    List<String> selectNameByID(String opID);

    List<OrgTypeDTO> findORGByType();

    List<TaskZNSDTO> findTaskIssued(TaskFindBOForInssued params);

    /**
     * 通过任务编号查询任务信息
     *
     * @param missionId [missionId]
     * @return TaskZNSDTO
     **/
    TaskZNSDTO selectById(String taskId);

    /**
     * 插入审核表
     */
    void insertTaskCopy(Map taskCopyMap);

    /**
     * 添加审核人员 操作员 。。。等
     */
    void updateTaskCopy(String taskId);

    /**
     * 审核任务
     */
    void auditTask(TaskCopyBO taskCopyBO);

    /**
     * 审核任务管理 -任务列表
     */
    List<TaskZNSDTO> taskListForLogin(TaskListForLoginBO params);

    List<TaskExportDTO> taskReviewExport(TaskListForLoginBO params);

    TaskZNSDTO auditTaskDetail(AuditTaskDetailBO auditTaskDetailBO);


    /**
     * 查询所有押运机构
     */
    List<OrgTypeDTO> findAllORG();

    String trunkNameById(String trunkSn);

    Map<String, String> selectLockByid(String s);


    /**
     * 根据机构号查机构名称
     */
    String findNameById(String Id);

    /**
     * 根据人员编号查询所属机构及人员名称
     */
    Map<String, String> selectIdAndNameById(String id);

    /**
     * 查询审核类型
     */
    String selectAuditType(String orgId);

    List<BoxDTO> findBoxByOrg(LockBO lock);

    Integer selectCountById(String Id);

    Map<String, String> findLockByBox(String trunkSn);

    List<LockDTO> findLockById(String id);

    /**
     * 根据尾箱sn查询尾箱信息
     */
    BoxInfo selectBoxBySn(OpenLockBO openLockBO);

    String selectIdByopId(String opId);

    List<findLockInfoDTO> findLockInfo(FindLockInfoBo f);

    Integer selectConut(String terminalSn);

    Integer selectConutBySn(String terminalSn);

    /**
     * 根据锁具sn删除任务（修改任务状态）
     * @param terminalSn
     * @return
     */
    Integer deleteBYSn(String terminalSn);

    /**
     * 根据锁具人员编号删除任务（修改任务状态）
     * @param opName
     * @return
     */
    Integer deleteBYOp(String opName);

    Integer selectConutForTer(String trunkSn);

    List<TaskZNSDTO> selectByOneBoxId(String trunkSn);

    List<TaskZNSDTO> selectByBoxId(String trunkSn);

    TaskCopy getTaskCopy(String taskId);

    int getCountByTaskTypeName(String taskTypeName);

    /**
     * @author wp
     * @Description: 根据场景机构查询人员
     * @date 2022/10/13
     */
    List<OrgRoleDTO> findOperatorByOrg(TaskSceOrgBO orgBO);

    List<TaskZNSDTO> selectByCon(TaskFindBO taskFindBO);

    /**
     * @author wp
     * @Description: 根据用户名查询调拨任务
     * @date 2023/4/28
     */
    List<TaskZNSDTO> findBrcByOpName(String opName);

}
